home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Audio 4.94 - Over 11,000 Files
/
audio-11000.iso
/
mac
/
players
/
elsndtrc.hqx
/
El Sound-Trecker V1.0
/
Simple Trecker.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-01
|
5KB
|
134 lines
/* Simple Trecker.c */
/* Demonstrationsprogramm fƒr die Anwendung der 'PSyn'- und die 'STrI'-Resource. */
/* Program to demonstrate the use of the 'PSyn' and 'STrI' resources. */
/*
Copyright (c) 1992 by
Frank Seide
Koolbarg 39d
D-2000 Hamburg 74
Germany
*/
/*
Die 'PSyn'- und die 'STrI'-Resource sowie dieser Beispielquelltext dƒrfen gerne
in Public-Domain-Software unter folgenden Bedingungen kostenlos verwendet werden:
Ñ die Musikroutinen sind nicht frei von Uhrheberrechten. Daher muº
sich im Public-Domain-Programm und in der Dokumentation ein Hinweis auf das
Copyright der beiden Resourcen unter Angabe meiner Adresse befinden;
Ñ ein Exemplar des Programms wird mir zugeschickt;
Ñ die Resourcen dƒrfen nicht verèndert werden (entdeckte Bugs bitte mir mitteilen;
ich werde sie dann beheben. Es ist wichtig, einen Versionswildwuchs zu vermeiden);
Ñ eine kommerzielle Nutzung ist nur nach meiner ausdrƒcklichen, schriftlichen
Zustimmung zulèssig, sonst nicht.
*/
/*
The 'PSyn' and 'STrI' resources as well as this example source code may be used
freely in public domain programs under the following conditions:
Ñ the resources themselves are copyrighted and not in the public domain!
The public domain program and the documentation must contain a copyright notice
like above, my address must be mentioned;
Ñ you must send me one copy of the program;
Ñ the code resources may not be modified (if you should find a bug, please tell me
to fix it. It½s important not to have too many different versions of the code);
Ñ any kind of commercial use is forbidden and requires a special license aggreement.
*/
#include <stdio.h>
#include <sound.h>
#include "PSyn.h"
#include "STrI.h"
main()
{
/* Das Programm benÜtigt den Sound-Manager von System 7 (den enthèlt auch System */
/* 6.0.7) und einen MC68020 (oder hÜher). Die 'PSyn'-Resource ƒberprƒft dies beim */
/* àffnen des Sound-Kanals. Es ist jedoch sinnvoll, diese åberprƒfung am Anfang */
/* des Hauptprogramms selbst durchzufƒhren (wird in diesem Beispiel nicht getan). */
/* The program requires the sound manager of System 7 (contained in System 6.0.7 */
/* and above) and a MC68020 (or higher). The 'PSyn' code performs a check before */
/* opening the sound channel. You may want to do this check in the main program
/* (not shown in this example). */
/* Variablen / Variables: */
int i;
struct PChannel * pc = NULL; /* Pointer */
struct SoundTrack ** strk = NULL; /* Handle! */
/* Konstanten / Constants: */
Boolean stereo = FALSE; /* Stereo ? */
Boolean fadeOut = TRUE; /* Beim Stoppen ausblenden / fade out on stop ? */
/* Initialisierungen / Initializations: */
InitGraf (&thePort);
InitFonts();
FlushEvents (everyEvent, 0);
InitWindows();
InitMenus();
TEInit();
InitDialogs (NULL);
InitCursor();
/* Soundkanal Üffnen / Open the sound channel: */
if (OpenPChannel (CHANNELS, stereo, 445*2, &pc)) { SysBeep (30); exit(); }
/* Wiedergabeabtastrate auf 22 kHz setzen (Default; nur zur Demonstration): */
/* Change output sampling rate to 22 kHz (default; just to demonstrate): */
pc->softFreq = pc->hardFreq = rate22khz;
/* Maximale Lautstèrke fƒr die 4 Stimmen, 50% Gesamtlautstèrke: */
/* Maximum volume for the four voices, 50% total volume: */
for (i = 0; i < 4; i++) PChannelVolume (pc, i, 0x10000);
PChannelVolume (pc, -1, 0x08000); /* -1 = Gesamtlautstèrke / Total volume */
/* Hauptschleife / Main Loop: */
while (TRUE) {
/* Open-Dialog prèsentieren / Show open dialog: */
Point openPoint = { 85, 100 };
SFTypeList theTypeList = { 'STrk' };
SFReply theReply;
SFGetFile (openPoint, "\p", NULL, 1, theTypeList, NULL, &theReply);
if (!theReply.good) { StopPChannel (pc, fadeOut); break; }
/* Laufenden SoundTrack abschalten / Stop currently playing SoundTrack: */
if (strk) {
StopPChannel (pc, fadeOut); /* Stoppen / stop playing */
UnlinkSoundTrack (strk); /* STrk abtrennen / Unlink STrk from chan */
DisposeSoundTrack (strk); /* Speicher freigeben / free memory */
strk = NULL;
}
/* Neuen SoundTrack laden / Load next SoundTrack: */
if (GetSoundTrack (theReply.vRefNum, theReply.fName, 0, &strk, FALSE))
SysBeep (30);
else {
/* SoundTrack-Optionen einstellen / Change SoundTrack options: */
(*strk)->musicRecord.loopDetect = TRUE;
/* Soundtrack mit Kanal verbinden / Link STrk to sound channel: */
LinkSoundTrack (strk, pc);
/* Kanaloptionen setzen / Change channel options: */
pc->antiAlias = TRUE;
PChannelVolume (pc, -1, 0x08000); /* NÜtig! / Necessary due to fadeOut */
/* Stƒck von vorne spielen / Play SoundTrack from start: */
ResetPChannel (pc);
if (StartPChannel (pc)) { SysBeep (30); break; }
}
}
/* Soundkanal schlieºen (unbedingt nÜtig bei System 6.0.7!): */
/* Close the sound channel (necessary on System 6.0.7!): */
ClosePChannel (pc);
}